package com.qdairlines.service.dict;

import java.util.List;

import com.qdairlines.entity.dict.DictionaryView;
import com.qdairlines.entity.dict.MasterData;

/**
 * @author pangyannan
 * @date 2017年8月22日
 * @company QingDao Airlines
 * @description 主数据服务
 */
public interface MasterDataService {
	/**
	 * 根据主数据注册代码，获取主数据清单
	 * @param <T>
	 * @return
	 */
	<T> List<MasterData<T>> listMasterDataByCode(String code);

	/**
	 * 将List中的数据，根据主数据code，进行数据转换
	 * @param list
	 * @param idColumnName
	 * @param valueColumnName
	 * @param masterDataCode
	 * @return
	 */
	<T> List<T> convert(List<T> list, String idColumnName,String valueColumnName, String masterDataCode);
	
	/**
	 * 将词典中的数据，转换为主数据
	 * @param list
	 * @return
	 */
	<T> List<MasterData<T>> convertDictionaryViewListToMasterDataList(List<DictionaryView> list);
	
	
	/**
	 * 将List中的数据，根据字典Code，转换为相应的显示值
	 * @param list
	 * @param idColumnName
	 * @param valueColumnName
	 * @param masterDataCode
	 * @return
	 */
	<T> List<T> convertFromDictCode(List<T> list, String idColumnName,String valueColumnName, String dictCode);
	
	
	/**
	 * 根据id获取主数据列表中的value值，如果有多个，则返回id值，有且只有一个，返回value值
	 * @param id
	 * @param list
	 * @return
	 */
	<T> String getValueByIdFromMasterDataList(String id,List<MasterData<T>> list);
	
	/** 
	 * 将主数据转换为 Multiselect 下拉框菜单
	 * @param listMasterData
	 * @param defaultIndex
	 * @return
	 */
	<T> String getMultiselectDataByMasterDataList(List<MasterData<T>> listMasterData,Integer defaultIndex);
	
	/**
	 * 获取主数据，并转换为 Multiselect 下拉框菜单
	 * @param code
	 * @return
	 */
	<T> String getMultiselectDataByMasterDataList(String code,Integer defaultIndex);
}
